/**
* All Rights Reserved , Copyright (C) 2020 , 青岛鼎信通讯股份有限公司
*
* IMpmProjectAppointmentService
* 项目任命
*
* 修改纪录
* 2020-12-28 版本：1.0 lanjianwei 创建。
* @version 版本：1.0
* @author 作者：lanjianwei
* 创建日期：2020-12-28
*/

package com.topscomm.mpm.service;

import com.topscomm.mpm.IMpmService;
import com.topscomm.mpm.dao.IMpmProjectAppointmentDao;
import com.topscomm.mpm.pojo.MpmProjectAppointmentEntity;
import com.topscomm.mpm.pojo.MpmProjectEntity;

import java.util.Date;
import java.util.Map;

public interface IMpmProjectAppointmentService extends IMpmService<MpmProjectAppointmentEntity, IMpmProjectAppointmentDao>{

    /**
    * @Description:    生成任命书
    * @Author:         mengmeng
    * @Date:           2021/8/14 14:19
    * @Version:        1.0
    */
    void generateAppointment(Map<String, Object> param) throws Exception;

    /**
    * @Description:    下载合同并转pdf
    * @Author:         mengmeng
    * @Date:           2021/8/14 14:19
    * @Version:        1.0
    */
    Map<String, Object> executeDownload(Map<String, Object> paraMap);

    /**
    * @Description:    发送邮件
    * @Author:         mengmeng
    * @Date:           2021/8/16 15:00
    * @Version:        1.0
    */
    void sendMessage(String appointId);

    /**
    * @Description:    生成任命书编号
    * @Author:         mengmeng
    * @Date:           2021/8/19 9:38
    * @Version:        1.0
    */
    String generateAppointNumber(String projectCode);

    /**
    * @Description:    生成任命书描述
    * @Author:         mengmeng
    * @Date:           2021/8/19 9:51
    * @Version:        1.0
    */
    String getAppointmentDescription(MpmProjectEntity mpmProjectEntity);

    /**
    * @Description:    构造任命书需要的数据，生成任命书
    * @Author:         mengmeng
    * @Date:           2021/8/19 9:52
    * @Version:        1.0
    */
    void generateAppointment(MpmProjectAppointmentEntity mpmProjectAppointmentEntity, MpmProjectEntity mpmProjectEntity) throws Exception;

    /**
    * @Description:    判断是否需要发送邮件和生成任命书编号
    * @Author:         mengmeng
    * @Date:           2021/8/24 17:30
    * @Version:        1.0
    */
    boolean judgeSendTime(String createOnStr, Date createOnDate);

    void remindTimeOutProject();
    /**
     * @author houyuhang
     * @Description 首页信息概览任命超期
     * @Date 2021/11/29
     * @return Map<String,Object>
     **/
    Map<String,Object> queryOverdueAppointment(Map<String,Object> paraMap);
    /**
     * @author houyuhang
     * @Description 首页信息概览任命待办
     * @Date 2021/11/29
     * @return Map<String,Object>
     **/
    Map<String,Object> queryBacklogAppointment(Map<String,Object> paraMap);
}
